#ifndef GUI_H
#define GUI_H

#include <SDL/SDL.h>

#include "utils/Timer/Timer.h"
#include "graphics/input/KeyboardEvents.h"
#include "graphics/input/MouseEvents.h"
#include "GameStateManager/GameStateManager.h"
#include "GameStateManager/GameState.h"
#include "utils/ApplicationLog/ApplicationLog.h"

// defines the frame rate for the aplication
#define FPS 60
#define FR 1000/FPS

// Parameters of the application window
#define SCREEN_WIDTH 640
#define SCREEN_HEIGHT 480
#define SCREEN_BPP 32

class Gui
{
    public:
        
        Gui();
        
        ~Gui();
        
        int Init(GameState* initial_screen);
        
        void Run();
        
    protected:
        
        GameStateManager _game_state;
        
    private:
        
        SDL_Surface* screen_surface;
        
        bool quit_running;
        
        void Render();
        
        int InitSDL();
        
        void HandleEvents();
        
        void ClearSurface();
};

#endif
